/*
 * 1.00 2012/10/16
 *
 * Copyright (c) 2012 Motch_bs
 * All rights reserved.
 *
 * このソフトウェアは，Motch_bsに所有される機密情報である。
 * これらの機密情報を漏洩してはならず，Motch_bs の意図する
 * 認可の元においてこれを使用すべし。
 */
package jp.co.ufp.voicetch.base.logics;

import jp.co.ufp.voicetch.base.util.AudioControler;
import android.app.Activity;
import android.app.ProgressDialog;

/**
 * @author Motch_bs
 * 
 */
public class Logic010 extends Logic000 {

    /** プログレスバー */
    private ProgressDialog progressDialog;

    /** 録音時間 */
    private long recoringTime = 5000;

    /**
     * @param audioControler
     */
    public Logic010(
	Activity pActivity, AudioControler pAudioControler,
	ProgressDialog pProgressDialog,
	long pRecoringTime) {
	super(pActivity, pAudioControler);
	this.activity = pActivity;
	this.audioControler = pAudioControler;
	this.progressDialog = pProgressDialog;
	this.recoringTime = pRecoringTime;
    }

    /*
     * (非 Javadoc)
     * 
     * @see java.lang.Runnable#run()
     */
    @Override
    public void run() {
	// --録音ロジック -----------------------------------
	audioControler.setRecording(true);
	Thread thread = new Thread(new Runnable() {
	    public void run() {
		audioControler.record();
	    }
	});
	thread.start();
	// 10秒間録音する
	synchronized (activity) {
	    try {
		activity.wait(recoringTime);
	    }
	    catch (InterruptedException e) {
		e.printStackTrace();
	    }
	}
	audioControler.setRecording(false);
	try {
	    thread.join();
	}
	catch (InterruptedException e) {
	}
	// プログレスダイアログの値を設定します
	progressDialog.incrementProgressBy(100);
	// プログレスダイアログのセカンダリ値を設定します
	progressDialog.incrementSecondaryProgressBy(100);
	// 閉じる
	progressDialog.dismiss();

	// TODO 負荷かかりすぎ。4分かかる。C++だと10分近くかかる。
	//audioControler.recorder.convertPitchShift();
	// --録音ロジック -----------------------------------

    }

}
